package testPackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
/**
 * step by step 04显式等待和隐式等待
 */
public class Selenium05 {
    //private static Object ElementLocator;

    public static void main(String[] args) {
        //设置启动器路径
        System.setProperty("webdriver.chrome.driver","D:\\\\Enviroments\\\\geckodriver-v0.26.0-win64\\\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //隐式等待
        /**
         * 隐式等待（使用时）设置为WebDriver实例，并应用于所有的web元素。在隐式等待中，
         * WebDriver轮询DOM检查webElement的可用性，并等待直到指定的最大时间后才引发
         * NoSuchElementException
         */
        //隐式等待 最长等待时间20s
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        //显式等待 适用于每个webElement，在显式等待中定义了条件
        /**
         * 在定位webElement或对其执行操作之前，webDriver实例要等待这些条件。显式
         * 等待中指定的一些最常见条件是elementToBeClickable,presenceOfElementLocated
         * 等。
         * webDriver实例等待直到满足指定条件，即ElementLocator定位到Element的存在，最大等待
         * 时间为15秒，此后如果仍然不满足条件，则它将引发异常。
         */
        //显式等待
        //WebDriverWait wait = new WebDriverWait(driver,15);
        //wait.until(ExpectedConditions.presenceOfElementLocated(ElementLocator));
    }
}
